package com.webflux.sample.webfluxmain;

import java.util.Optional;
import reactor.core.publisher.Mono;

public class _4mono_static_method {

  public static void main(String[] args) {
    // fromCallable()，fromCompletionStage()，fromFuture()，fromRunnable()和fromSupplier()：分别从Callable，CompletionStage，CompletableFuture，Runnable和Supplier中创建Mono
    Mono.fromSupplier(() -> "Hello").subscribe(System.out::println);
    // delay(Duration duration)和delayMillis(long duration)：创建一个Mono序列，在指定的延迟时间之后，产生数字0作为唯一值
    // ignoreElements(Publisher source)：创建一个Mono序列，忽略作为源的Publisher中的所有元素，只产生消息
    // justOrEmpty(Optional<? extends T> data)和justOrEmpty(T data)：从一个Optional对象或可能为null的对象中创建Mono。只有Optional对象中包含之或对象不为null时，Mono序列才产生对应的元素
    Mono.justOrEmpty(Optional.of("not empty")).subscribe(System.out::println);
    Mono.justOrEmpty(Optional.empty()).subscribe(System.out::println);
    Mono.create(sink -> sink.success("Hello")).subscribe(System.out::println);
  }

}
